home *** CD-ROM | disk | FTP | other *** search
- /*
- ==============================================================================
- WordUp Graphics Toolkit Version 5.0
- Demonstration Program 32
-
- Demonstrates the use of wwarp - press q to end program execution.
-
- *** PROJECT ***
- This program requires the file WGT5_WC.LIB to be linked.
-
- *** DATA FILES ***
- You must have the WGT1.PCX file in your executable dir.
- WATCOM C++ VERSION
- ==============================================================================
- */
-
- #include <wgt5.h>
- #include <conio.h>
-
-
- void main(void)
- {
- short i, t, c, b;
- color pal[256];
- block wgt1;
- short top[320];
- short bot[320];
- short oldmode; /* Store previous video mode */
-
- if ( !vgadetected () )
- {
- printf("Error - VGA card required for any WGT program.\n");
- exit (0);
- }
-
- printf ("WGT Example #32\n\n");
- printf ("A full-screen bitmap is warped into various shapes using WWARP.\n");
- printf ("Press a key to warp the object into a new shape. Press Q to end.\n");
- printf ("\n\nPress any key to continue.\n");
- getch ();
-
- oldmode = wgetmode (); /* Gets the current mode */
- vga256 (); /* Initialize graphics mode */
-
- wgt1 = wloadpcx ("wgt1.pcx", pal); /* Load our image to play with */
- wsetpalette (0, 255, pal); /* Set the palette */
-
- wcls (0); /* Clear screen with black */
- wclip (0, 0, 319, 199); /* Use full screen */
-
- /* Note: wsline merely stores y coordinates of line in array. You may use
- several calls with various x ranges to make curved lines */
-
- wsline (0, 199, 319, 0, top); /* Set array top for diagonal line */
- wsline (0, 199, 319, 199, bot); /* Array bot is horizontal line */
- wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image between lines */
- getch (); /* Wait for key */
- /* squish it */
-
- wcls (0); /* Clear screen */
- wsline (0, 0, 319, 199, top); /* Set array top for diagonal line */
- wsline (0, 199, 319, 0, bot); /* Array bot is horizontal line */
- wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image between lines */
- getch (); /* Wait for key */
- /* squish it */
-
- wcls (0); /* Clear screen */
- wsline (0, 100, 100, 0, top); /* Now create arrow shape */
- wsline (101, 70, 218, 70, top);
- wsline (219, 0, 319, 100, top);
-
- wsline (0, 100, 100, 199, bot);
- wsline (101, 130, 218, 130, bot);
- wsline (219, 199, 319, 100, bot);
- wwarp (0, 319, top, bot, wgt1, NORMAL); /* Warp image using arrays */
- getch (); /* Wait for keypress */
- /* make a double arrow */
-
- wcls (0); /* Clear screen with black */
- do
- {
- b = rand () % 100;
- c = (rand () % 100) + 100;
- for (t = 0; t <= 319; t++)
- {
- i = rand () % 2;
- if (i == 0)
- b++;
- else b--;
- i = rand () % 2;
- if (i == 0)
- c++;
- else c--;
- if (b > 100)
- b = 100;
- if (b < 0)
- b = 0;
- if (c > 197)
- c = 197;
- if (c < 100)
- c = 100;
-
- top[t] = b; /* Create random wavy lines */
- bot[t] = c;
- }
- wwarp (0, rand () % 320, top, bot, wgt1, XRAY); /* And warp image between them */
- i = getch (); /* Wait for keypress */
- } while (i != 'q'); /* End program if Q pressed */
-
- wfreeblock (wgt1); /* Free memory from image */
- wsetmode (oldmode); /* Restore initial video mode */
- }
-